<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <script type="text/javascript" src="../internal.js"></script>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
                color: #838383;
            }
            table {
                font-size: 12px;
                margin: 10px;
                line-height: 30px;
            }
            .txt {
                width: 300px;
                height: 21px;
                line-height: 21px;
                border: 1px solid #d7d7d7;
            }
        </style>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    <label for="text"> <var id="lang_input_text"></var></label>
                </td>
                <td><input class="txt" id="text" type="text" disabled="true" /></td>
            </tr>
            <tr>
                <td>
                    <label for="href"> <var id="lang_input_url"></var></label>
                </td>
                <td><input class="txt" id="href" type="text" /></td>
            </tr>
            <tr>
                <td>
                    <label for="title"> <var id="lang_input_title"></var></label>
                </td>
                <td><input class="txt" id="title" type="text" /></td>
            </tr>
            <tr>
                <td colspan="2">
                    <label for="target"><var id="lang_input_target"></var></label>
                    <input id="target" type="checkbox" />
                </td>
            </tr>
            <tr>
                <td colspan="2" id="msg"></td>
            </tr>
        </table>
        <script type="text/javascript">
            var range = editor.selection.getRange(),
                link = range.collapsed ? editor.queryCommandValue('link') : editor.selection.getStart(),
                url,
                text = $G('text'),
                rangeLink = domUtils.findParentByTagName(range.getCommonAncestor(), 'a', true),
                orgText;
            link = domUtils.findParentByTagName(link, 'a', true);
            if (link) {
                url = utils.html(link.getAttribute('_href') || link.getAttribute('href', 2));

                if (rangeLink === link && !link.getElementsByTagName('img').length) {
                    text.removeAttribute('disabled');
                    orgText = text.value = link[browser.ie ? 'innerText' : 'textContent'];
                } else {
                    text.setAttribute('disabled', 'true');
                    text.value = lang.validLink;
                }
            } else {
                if (range.collapsed) {
                    text.removeAttribute('disabled');
                    text.value = '';
                } else {
                    text.setAttribute('disabled', 'true');
                    text.value = lang.validLink;
                }
            }
            $G('title').value = url ? link.title : '';
            $G('href').value = url ? url : '';
            $G('target').checked = url && link.target == '_blank' ? true : false;
            $focus($G('href'));

            function handleDialogOk() {
                var href = $G('href').value.replace(/^\s+|\s+$/g, '');
                if (href) {
                    if (!hrefStartWith(href, ['http', '/', 'ftp://', '#'])) {
                        href = 'http://' + href;
                    }
                    var obj = {
                        href: href,
                        target: $G('target').checked ? '_blank' : '_self',
                        title: $G('title').value.replace(/^\s+|\s+$/g, ''),
                        _href: href,
                    };
                    //修改链接内容的情况太特殊了，所以先做到这里了
                    //todo:情况多的时候，做到command里
                    if (orgText && text.value != orgText) {
                        link[browser.ie ? 'innerText' : 'textContent'] = obj.textValue = text.value;
                        range.selectNode(link).select();
                    }
                    if (range.collapsed) {
                        obj.textValue = text.value;
                    }
                    editor.execCommand('link', utils.clearEmptyAttrs(obj));
                    dialog.close();
                }
            }
            dialog.onok = handleDialogOk;
            $G('href').onkeydown = $G('title').onkeydown = function (evt) {
                evt = evt || window.event;
                if (evt.keyCode == 13) {
                    handleDialogOk();
                    return false;
                }
            };
            $G('href').onblur = function () {
                if (!hrefStartWith(this.value, ['http', '/', 'ftp://', '#'])) {
                    $G('msg').innerHTML = "<span style='color: red'>" + lang.httpPrompt + '</span>';
                } else {
                    $G('msg').innerHTML = '';
                }
            };

            function hrefStartWith(href, arr) {
                href = href.replace(/^\s+|\s+$/g, '');
                for (var i = 0, ai; (ai = arr[i++]); ) {
                    if (href.indexOf(ai) == 0) {
                        return true;
                    }
                }
                return false;
            }
        </script>
    </body>
</html>
